package br.com.mynage.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.mynage.dominio.Projeto;
import br.com.mynage.dominio.Sprint;
import br.com.mynage.service.IServiceSprint;
import br.com.mynage.service.IServiceUsuario;
import br.com.mynage.service.impl.ServiceSprintImpl;
import br.com.mynage.service.impl.ServiceUsuarioImpl;

/**
 * Managed bean responsável por operações com Sprint.
 * @author Valmiro
 *
 */
@ManagedBean(name = "sprint")
@SessionScoped
public class SprintMBean {
	
	/**Sprint usada na camada de visão.*/
	private Sprint sprint;
	/**Serviço usado na camada de visão.*/
	private IServiceSprint service;
	/**Projeto Selecionado para ser usado na busca de sprints.*/
	private Projeto projeto;
	/**Lista de sprint do projeto*/
	private List<Sprint> sprints;
	/** Flag para determinar operação de edição/atualização**/
	private boolean isEditar;

	/**Construtor padrão*/
	public SprintMBean() {
		sprint = new Sprint();
		service = new ServiceSprintImpl();
		sprints = new ArrayList<Sprint>();
		projeto = new Projeto();
		sprint.setData(new Date());
	}	
	
	public String cadastrar (){
		sprint.setProjeto(projeto);
		service.cadastrar(sprint);
		sprint = new Sprint();
		sprints = service.getSprints(projeto);
		return null;
	}
	
	/** Atualiza um tarefa existente **/
	public String atualizar() {
		service.editar(sprint);
		isEditar = false;
		sprint = new Sprint();
		return null;
	}
	
	/**Permite q a tela de edição apareça*/
	public String editar () {
		isEditar = true;
		return null;
	}
	
	public String remover () {
		service.remover(sprint);
		sprints = service.getSprints(projeto);
		sprint = new Sprint();
		return null;
	}
	
	public String listar () {
		sprints = service.getSprints(projeto);
		for(Sprint s:sprints) {
			s.setProjeto(projeto);
		}
		sprint = new Sprint();
		IServiceUsuario uService = new ServiceUsuarioImpl();
		projeto.setUsuarios(uService.getUsuarios(projeto));
		return "/sprint/list";
	}
	
	public IServiceSprint getService() {
		return service; 
	}

	public void setService(IServiceSprint service) {
		this.service = service;
	}

	public Sprint getSprint() {
		return sprint;
	}

	public void setSprint(Sprint sprint) {
		this.sprint = sprint;
	}	

	public Projeto getProjeto() {
		return projeto;
	}

	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}

	public List<Sprint> getSprints() {
		return sprints;
	}

	public void setSprints(List<Sprint> sprints) {
		this.sprints = sprints;
	}

	/**Indica se está havendo edição ou não.*/
	public boolean isEditar() {
		return isEditar;
	}

	public void setEditar(boolean isEditar) {
		this.isEditar = isEditar;
	}


}
